In the course of the increasing modularization of software components, the organization of related data and operations in structures intended for this by the respective programming languages has acquired prominence as the standard. For the “‘higher’ programming languages”, these structures are, on a lower level, the “procedures” or “functions”, related procedures or functions in each case being combined, for example, in a module, and related modules possibly being combined in a “collection”, and the modules or the possibly existing collections finally being combined into the executable application.
The data exchange between the described structures is carried out via predefined or predefinable interfaces. As an example, a function will be discussed which ascertains the weekday that corresponds to a preselected date. The date in question is to be transferred to this function as parameter, whereas the weekday corresponding this date is returned by the function as result. In this context, the definable or predefined interface, on one hand, makes the memory location available via which this data can be exchanged and, on the other hand, guarantees the consistency of the data, for example, by carrying out a type test which, in the presently discussed case, ensures that the function does not ascertain the supposed weekday corresponding to a text string transferred as parameter.
In the present case, thus, a memory location which is suitable for receiving a representation representing the date, as well as a further memory location which is suitable for receiving a representation of the weekend returned as result are required.
A basically comparable constellation is also found in automation projects, the specific software components being organized, for example, according to the process periphery to be controlled and/or monitored. The structures used in a programming language, for example, Step® 5 or Step® 7 (registered trademarks of SIEMENS AG), which is common for automation projects, are called function blocks or operation blocks. These blocks have interfaces, as well, via which they can be parameterized, via which specific actions can be occasioned, via which specific internal data of the block or process-related data can be interrogated, etc.